﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Modding;
using Modding.Blocks;
using UnityEngine;
using XMLTypes;
using UnityEngine.Networking;

class testScript:EnhancementBlock
    {



    public override void SafeAwake()
    {
        base.SafeAwake();
        //Events.OnMachineSave += onSave;
        //Events.OnMachineLoaded += onLoad;


        Debug.Log("safe awake");
    }

    void onSave(PlayerMachineInfo playerMachineInfo)
    {
        //var block = playerMachineInfo.Blocks.ToList().Find(match => match.Guid == BB.Guid);
        ////block.Data.Write("JoyAxis", joyAxis);
        //block.Data.Write(new XSingle("t-offset", joyAxis.Offset));
    }

    void onLoad(PlayerMachineInfo playerMachineInfo)
    {
        //var block = playerMachineInfo.Blocks.ToList().Find(match => match.Guid == BB.Guid);
        //block.Data.re("test data", JoyAxis.Default);
    }



    //public class XJoyAxis:XData
    //{

    //    public override object RawValue { get { return Value; } }

    //    public override string Type => "JoyAxis";

    //    public const int EncodedSize = 21;

    //    public JoyAxis Value { get; set; }/* = JoyAxis.Default;*/

    //    public XJoyAxis(string key,int joyIndex,int axisIndex,bool flipped,float offset,float min,float max) : this( key, new JoyAxis(joyIndex,axisIndex,flipped,offset,min,max))
    //    {
    //        //Value.JoyIndex = joyIndex;
    //        //Value.AxisIndex = axisIndex;
    //        //Value.Flipped = flipped;
    //        //Value.Offset = offset;
    //        //Value.Min = min;
    //        //Value.Max = max;
    //    }

    //    public XJoyAxis(string key, JoyAxis joyAxis) : base(key)
    //    {
    //        Value = joyAxis;
    //    }

    //    public XJoyAxis(string key) : base(key)
    //    {
    //        //Value = JoyAxis.Default;
    //    }

    //    public override void Decode(byte[] data, int offset)
    //    {
    //        int joyIndex = BitConverter.ToInt32(data, offset);
    //        int axisIndex = BitConverter.ToInt32(data, offset + 4);
    //        bool flipped = BitConverter.ToBoolean(data, offset + 8);
    //        float _offset = BitConverter.ToSingle(data, offset + 9);
    //        float min = BitConverter.ToSingle(data, offset + 13);
    //        float max = BitConverter.ToSingle(data, offset + 17);

    //        Value = new JoyAxis(joyIndex, axisIndex, flipped, _offset, min, max);
    //    }

    //    public override byte[] Encode()
    //    {
    //        //return new byte[EncodedSize];
    //        byte[] num = new byte[EncodedSize];
    //        num[0] = (byte)Mathf.RoundToInt(Value.JoyIndex);
    //        num[4] = (byte)Mathf.RoundToInt(Value.AxisIndex);
    //        num[8] = Convert.ToByte(Value.Flipped);
    //        num[9] = (byte)Mathf.Round(Value.Offset);
    //        num[13] = (byte)Mathf.Round(Value.Min);
    //        num[17] = (byte)Mathf.Round(Value.Max);

    //        return num;
    //    }

    //    public static explicit operator JoyAxis(XJoyAxis xJoyAxis)
    //    {
    //        return new JoyAxis(xJoyAxis.Value.JoyIndex, xJoyAxis.Value.AxisIndex, xJoyAxis.Value.Flipped,xJoyAxis.Value.Offset, xJoyAxis.Value.Min, xJoyAxis.Value.Max);
    //    }

    //    public override XAttribute[] Serialize()
    //    {
    //        XAttribute[] xAttribute = new XAttribute[6];

    //        int joyIndex = Value.JoyIndex;
    //        xAttribute[0] = new XAttribute("JoyIndex", joyIndex.ToString(StaticSettings.Culture));
    //        int axisIndex = Value.AxisIndex;
    //        xAttribute[1] = new XAttribute("AxisIndex", axisIndex.ToString(StaticSettings.Culture));
    //        bool flipped = Value.Flipped;
    //        xAttribute[2] = new XAttribute("Flipped", flipped.ToString(StaticSettings.Culture));
    //        float offset = Value.Offset;
    //        xAttribute[3] = new XAttribute("Offset", joyIndex.ToString(StaticSettings.Culture));
    //        float min = Value.Min;
    //        xAttribute[4] = new XAttribute("Min", joyIndex.ToString(StaticSettings.Culture));
    //        float max = Value.Max;
    //        xAttribute[5] = new XAttribute("Max", joyIndex.ToString(StaticSettings.Culture));

    //        return xAttribute;
    //    }

    //    public static XData DeSerialize(string key, XAttribute[] data)
    //    {
    //        return new XJoyAxis(key,
    //            Convert.ToInt32(data[0].Value, StaticSettings.Culture),
    //            Convert.ToInt32(data[1].Value, StaticSettings.Culture),
    //            Convert.ToBoolean(data[2].Value, StaticSettings.Culture),
    //           Convert.ToSingle(data[3].Value, StaticSettings.Culture),
    //            Convert.ToSingle(data[4].Value, StaticSettings.Culture),
    //           Convert.ToSingle(data[5].Value, StaticSettings.Culture));
    //    }
    //}

}

